package com.martin.lib_base

import androidx.lifecycle.MutableLiveData
import com.martin.lib_base.bean.UserBean
import com.martin.lib_base.constant.ConstantKey
import com.tencent.mmkv.MMKV
import dev.DevUtils
import dev.utils.app.HandlerUtils

/**
 * @author：Houge
 * @date：2022/10/14
 * @desc：
 */
object LibBase {

    /**
     * 是否为debug模式
     */
    val debug = BuildConfig.apkType == "debug" || BuildConfig.DEBUG

    /**
     * 应用名称
     * 用于各个地方的命名,例如:数据库名称
     */
    const val appName = BuildConfig.appName

    /**
     * 是否已登录
     */
    val isLogin = MutableLiveData<Boolean>()
        get() {
            if (field.value == null) {
                HandlerUtils.postRunnable {
                    field.value = MMKV.defaultMMKV().decodeBool(ConstantKey.IS_LOGIN, false)
                }
            }
            return field
        }

    /**
     * 用户信息
     */
    var userInfo = MutableLiveData<UserBean>()
        get() {
            if (field.value == null) {
                HandlerUtils.postRunnable {
                    MMKV.defaultMMKV()
                        .decodeParcelable(ConstantKey.USER_INFO, UserBean::class.java)?.let {
                            field.value = it
                        }
                }
            }
            return field
        }

    /**
     * 登录信息
     */
    val token: String
        get() {
            return MMKV.defaultMMKV().decodeString(ConstantKey.TOKEN) ?: ""
        }

    /**
     * 用户ID
     */
    val userId: String
        get() {
            return MMKV.defaultMMKV().decodeString(ConstantKey.USER_ID) ?: ""
        }
}